var url='http://localhost:8080/mySSM/';
$(document).ready(function () {
    var totalRecord;
    var curPage;
    to_page(1);
    addEmployee();
});
function to_page(pages) {
    $.ajax({
        url:url+'find',
        data:'pages='+pages,
        type:'GET',
        success:function (reslut) {
            //解析并显示员工数据
            build_emp_table(reslut);
            //显示页码数
            build_emp_pages(reslut);
            //分页条码
            build_emp_navigatepageNums(reslut);
        }
    })
}
function build_emp_table(reslut) {
    $('.employee_tbody').empty();
var employee_info = reslut.extend.pageInfo.list;
    $.each(employee_info,function (index,item) {
        var checkbox = $('<td><input type="checkbox" class="check-input"/></td>');
        var empId = $('<td></td>').append(item.empId);
        var empName = $('<td></td>').append(item.empName);
        var empGender = $('<td></td>').append(item.gender);
        var empEmail = $('<td></td>').append(item.empEmail);
        var empDepName = $('<td></td>').append(item.department.deptName);
        var updateBtn =$('<button class="btn btn-primary btn-sm edit"></button>')
            .append('<span class="glyphicon glyphicon-pencil"></span>').append('编辑');
        updateBtn.attr('btn_id',item.empId);
        var deleteBtn = $('<button class="btn btn-danger btn-sm delete_btn"></button>')
            .append('<span class="glyphicon glyphicon-trash"></span>').append('删除');
        deleteBtn.attr('delete_id',item.empId);
        var btn = $('<td></td>').append(updateBtn).append(' ').append(deleteBtn);
        $('<tr></tr>').append(checkbox).append(empId).append(empName).append(empGender).append(empEmail).append(empDepName).append(btn)
            .appendTo('.employee_tbody');
    });

}

build_emp_pages = (result)=> {
    $('#emp_pages').empty();
    var pageInfo = result.extend.pageInfo;
    $('#emp_pages').append('当前第'+pageInfo.pageNum+'页'+',总共'+pageInfo.total+'记录数， 总'+pageInfo.pages+'页数');
    totalRecord = pageInfo.total;
    curPage = pageInfo.pageNum;
}

build_emp_navigatepageNums=(result)=> {
    $('#emp_navPage').empty();
    var pageInfo = result.extend.pageInfo;
    var navigatePageNums = result.extend.pageInfo.navigatepageNums;
    var my_nav = $('<nav></nav>');
    var my_ul =  $('<ul></ul>').addClass('pagination');
    var first_page = $('<li></li>').append('<a>首页</a>').attr('href',url+'find?pages=1');
    var last_page = $('<li></li>').append('<a href="#">尾页</a>');


    var a_previous = $('<span aria-hidden="true">&laquo;</span>').appendTo('<a href="#" aria-label="Previous"></a>');
    var a_next = $('<span aria-hidden="true">&raquo;</span>').appendTo('<a href="#" aria-label="Previous"></a>');

    var previousPage = $('<li></li>').append(a_previous);
    var nextPage = $('<li></li>').append(a_next);

    if (pageInfo.hasPreviousPage == false){
        previousPage.addClass('disabled');
        first_page.addClass('disabled');
    }else{
        first_page.click(function () {
            to_page(1);
        });
        previousPage.click(function () {
            to_page(pageInfo.pageNum-1);
        });
    }
    if (pageInfo.hasNextPage == false){
        last_page.addClass('disabled');
        nextPage.addClass('disabled');
    }else{
        last_page.click(function () {
            to_page(pageInfo.pages);
        });
        nextPage.click(function () {
            to_page(pageInfo.pageNum+1);
        });
    }
   my_ul =  my_ul.append(first_page).append(previousPage);
    var navigatePage;
    $.each(navigatePageNums,function (index,item) {
        var a_num = $('<a></a>').append(item);
        var li_num =$('<li></li>').append(a_num);
        if (pageInfo.pageNum == item){
            li_num.addClass('active');
        }
        li_num.click(function () {
            to_page(item);
        });
        navigatePage = my_ul.append(li_num);
    });

    my_ul.append(navigatePage).append(nextPage).append(last_page)
        .appendTo(my_nav);
    my_nav.appendTo('#emp_navPage');

}
//完整清除表单数据
reset_form=(ele)=>{
    //清除表单内容
    $(ele)[0].reset();
    //清除表单样式
    $(ele).find('*').removeClass('has-success has-error');
    $(ele).find('.help-block').text('');
}
//添加员工
addEmployee=()=>{
    //外部新增按钮
    $('#add_employees').click(function () {
        //完整清除表单数据
        reset_form('#add_employee_model form');
        //$('#add_employee_model form')[0].reset();
        get_dept_name('#dept_option');
        //弹出静态模块
        $('#add_employee_model').modal({
            backdrop:'static'
        });
    });

    $('#inputName').change(function () {
        var empName = this.value;
        //发送请求 检查用户是否已经存在
        $.ajax({
            url:url+'checkUser',
            type:'post',
            data:'empName='+empName,
            success:function (data) {
                if (data.code==666) {
                    validate_show_msg('#inputName','success','用户可用');
                    $('#addEmployeeBtn').attr('ajax-va','success');
                }else {
                    validate_show_msg('#inputName','error',data.extend.va_msg);
                    $('#addEmployeeBtn').attr('ajax-va','error');
                }
            }
        });
    });


    //保存员工信息按钮
    $('#addEmployeeBtn').click(function () {
       var formData = $('#add_employee_model form').serialize();
       if (!validate_add_form()){
           return false;
       }
       //ajax校验用户名是否已经存在，若存在就阻止表单提交
       if ($(this).attr('ajax-va')=='error') {
           return false;
       }
        $.ajax({
            url:url+'employee',
            type:'post',
            data:formData,
            success:function (data) {
               if (data.code == 666) {
                   //信息保存成功
                   //关闭静态框
                   $('#add_employee_model').modal('hide');
                   //显示最后一条数据
                   to_page(totalRecord);
               }else {
                   //用户姓名错误提示
                   if (undefined != data.extend.valid_msg.empName) {
                       validate_show_msg('#inputName','error',data.extend.valid_msg.empName);
                   }
                   //邮箱错误提示
                  if (undefined != data.extend.valid_msg.empEmail) {
                      validate_show_msg('#inputEmail','error',data.extend.valid_msg.empEmail);
                  }
               }
            }
        })
    });
}

get_dept_name=(ele)=>{
    $('#dept_option').empty();
    //查询出所有部门信息
    $.ajax({
        url:url+'getDeptInfo',
        type:'get',
        success:function (result) {
            var deptInfo = result.extend.departmentInfo;
            $.each(deptInfo,function (index,item) {
                $('<option></option>').append(item.deptName).attr('value',item.deptId).appendTo(ele);
            });
        }
    });
}

function validate_add_form (){
    var emp_name = $('#inputName').val();
    var emp_email = $('#inputEmail').val();
    var regName = /(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5}$)/;
    var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;

        if (!regName.test(emp_name)) {
            validate_show_msg('#inputName','error','用户名必须是2-5位中文或者6-16位英文和数字的组合');
            return false;
        }else{
            validate_show_msg('#inputName','success','');
        }

    if (!regEmail.test(emp_email)) {
        validate_show_msg('#inputEmail','error','邮箱格式不正确');
        return false;
    }else {
        validate_show_msg('#inputEmail','success','');
    }
    return true;
}
validate_show_msg=(ele,statu,msg)=>{
    $(ele).parent().removeClass('has-error has-success');
    if ('error'==statu) {
        $(ele).parent().addClass('has-error');
        $(ele).next('span').text(msg);
    }else if ('success'==statu){
        $(ele).parent().addClass('has-success');
        $(ele).next('span').text(msg);
    }
}

//编辑
$(document).on('click','.edit',function () {
    //显示部门
    get_dept_name('#dept_option_update');

    var btn_id = $(this).attr('btn_id');
    //把id值传到‘跟新’按钮中
    $('#updateEmployeeBtn').attr('update_id',btn_id);
    $.ajax({
        url:url+'find/'+btn_id,
        type:'get',
        success:function (result) {
            var employee = result.extend.employee;
            $('#inputName_update').text(employee.empName);
            $('#inputEmail_update').val(employee.empEmail);
            $('#update_employee_model input[name=gender]').val([employee.gender]);
            $('#update_employee_model select').val([employee.dId]);

        }
    });

    //开启静态模块
    $('#update_employee_model').modal({
        backdrop:'static'
    });
});
//跟新保存数据
$('#updateEmployeeBtn').click(function () {
    var update_id = $(this).attr('update_id');
   var update_data =  $('#update_employee_model form').serialize();
    $.ajax({
        url:url+'find/'+update_id,
        type:'put',
        data:update_data,
        success:function (result) {
            $('#update_employee_model').modal('hide');
            to_page(curPage);
        }
    });
});

//删除
$(document).on('click','.delete_btn',function () {
    var empId = $(this).attr('delete_id');
   var empName = $(this).parents('tr').find('td:eq(2)').text();
   if (confirm("您要删除【"+empName+"】这条记录吗？")){
       $.ajax({
           url:url+'find/'+empId,
           type:'delete',
           success:function (result) {
               to_page(curPage);
           }
       });
   }
});
//批量删除
$('#checkBox_all').click(function () {
    $('.check-input').prop('checked',$(this).prop('checked'));
});

$(document).on('click','.check-input',function () {
    var flag = $('.check-input:checked').length == $('.check-input').length;
    $('#checkBox_all').prop('checked',flag);
});
$('#delete_employee_all').click(function () {
    var empNameStr = '';
    var empIdStr = '';
    $.each($('.check-input:checked'),function () {
        empNameStr += $(this).parents('tr').find('td:eq(2)').text()+',';
        empIdStr += $(this).parents('tr').find('td:eq(1)').text()+'-';
    });
    empNameStr = empNameStr.substring(0,empNameStr.length-1);
    empIdStr = empIdStr.substring(0,empIdStr.length-1);
    if (confirm('您想要删除【'+empNameStr+'】这些数据吗？')) {
        $.ajax({
            url:url+'find/'+empIdStr,
            type:'delete',
            success:function (result) {
                to_page(curPage);
                $('#checkBox_all').prop('checked',false);
            }
        });
    }
});